1. Field of the Invention
This invention relates to the creation of, and management of, web services. More specifically, the invention relates to the creation of a web service which is defined and managed by way of a database management system.
2. Description of the Related Art
The computing world is far from homogeneous; various platforms, languages, and operating systems are available and in use across the globe. In addition, computers within the same organization or network often operate on different platforms. Allowing these entities to communicate with one another is often very difficult given that they do not ‘speak the same language.’ The inability of computers to communicate across platforms increases expenses when functional legacy systems need to be replaced simply to provide compatibility, or when programmers have to translate, or ‘port’ code from one computing language to another to provide the same functionality on a different machine.
Web services provide a solution to the problem by providing a standard means for communicating across different platforms and frameworks in a network. Web services are application components which are self-contained and self-describing using open protocols for communication. These services can be invoked by a client regardless of the underlying platforms of the service provider and the client so long as both participants to the transaction adhere to the accepted web services protocols. Typically, in a web service environment, clients and servers communicate XML messages, adhering to the HTTP protocol, and using the SOAP standard. Web services may use different service invocation languages (such as XML-RPC), and other transfer protocols, but SOAP and HTTP currently are the most popular choices.
Generally, web services are meant to be invoked by client applications, as opposed to being used directly by humans. Web services can allow an entity to share information while maintaining control over the source of the information. For example, web services can be used to by companies to provide clients with access to certain information without exposing the entire database and creating vulnerabilities. For example, a web service can be developed to allow a client to retrieve a user's address, as stored in the company's database, and update that address as needed. The web service allows the client application to access this information regardless of the platform that is being used, so long as both sides use the same agreed-upon protocols. In addition, the company does not have to open the database to the clients in order to provide the information, making it a more secure method of information sharing.
Typically, creating a web service to expose data involves a service provider creating an application and placing the code on an application server. The management of the web service and its life cycle is all done on the application server (often referred to as the application server side or tier). Although intuitive to those familiar with application servers, this approach to exposing data through a web service has a number of difficulties.
First, creating and managing web services on an application server can be difficult for Database Administrators and others who have limited experience working outside of the database environment. The process of writing web services, deploying them on an application server and then managing them from that point can be cumbersome for an individual with a specialization in database, creation, design, and management. If the Database Administrator lets another individual, such as an Application Server administrator, create and manage the web services for the database, the Database Administrator is giving up some control of the database; access to the data is now possible through a web service managed on a separate server by a separate individual. The developed web services may allow changes to the data that the Database Administrator did not intend to allow, and shutting down the web services to allow for maintenance at the database adds a layer of complexity when the web services need to be stopped and restarted at the application server by a Systems Administrator.
Even for those familiar with application servers, developing and deploying web services, such as those used to access information in a database, is often a time-consuming process. To develop a web service, an application developer codes the service in a supported programming language such as Java or C++, writes SQL, XQuery or other data access statements to access information in the database, provides namespaces, operation names, and message style, and then packages the code in a deployable component. To deploy the web service, the web application administrator sets up and configures a data source for a data server, deploys the web service as an application, and configures settings for the web service such as security and resource references. The web application administrator also manages the life-cycle of the web service, which may require repeating many of the above steps.
In addition, if a web service is distributed over multiple application servers or nodes in order to provide high availability, the code for the web service must be manually copied, maintained, and kept in synchronization across all servers on which the code is located. These applications servers themselves may not be of a uniform type, requiring the user to handle each individual case of deployment and management according to the requirements of each system. As a result of the foregoing, creating, developing, and maintaining web services can impose a high cost on an organization at all points in the web service lifecycle, particularly in a heterogeneous environment.
From the foregoing discussion, it is apparent that there is a need for a data server-managed web service tool which allows a Database Administrator or other user familiar with the database tier or side to easily and efficiently create, control, and deploy web services from the database side, as opposed to the application server side. The tool should ideally insulate the details of running and managing the web service on an application server such that a Database Administrator can effectively monitor and manage the web services from a Database Management System (DBMS). The tool should also centralize the management of the web service regardless of the number and type of application servers on which the web service is deployed.